package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.PieceYardageLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;

/**
 * 单耗数据明细访问对象接口。
 *
 * @author 吴旭
 */
public interface PieceYardageLinesRepository extends GenericRepository<PieceYardageLinesEntity, String> {

    /**
     * 根据单耗标识取得单耗明细。
     *
     * @param headerKey 单耗标识
     * @return 单耗计划明细
     */
    List<PieceYardageLinesEntity> fetchByHeaderKey(Long headerKey);

    /**
     * 通过料号更改当前单耗明细的材料。
     *
     * @param linesId 单耗表明细标识
     * @param materialId 要更改的料ID
     * @return 影响行数
     */
    Integer updateLinesByMaterialId(String linesId, Long materialId);

    /**
     * 批量清空单耗用量。
     *
     * @param itemsList 所选单耗
     * @return 影响行数
     */
    Integer batchClearLinesPieceYardage(List<PieceYardageLinesEntity> itemsList);

    /**
     * 设置单耗数据。
     *
     * @param itemsList 要处理的数据
     * @return 影响行数
     */
    Integer updateLinesGrade(List<PieceYardageLinesEntity> itemsList);

    /**
     * 根据所选款号，引入单耗明细。
     *
     * @param headerId 当前单耗ID
     * @param importedBomHeaderId 要引入的单耗ID
     * @param createdBy 作成者
     * @param updatedBy 更新者
     * @return 影响行数
     */
    Integer importLinesFromOtherBom(Long headerId, Long importedBomHeaderId, Long createdBy, Long updatedBy);

    /**
     * 从剪切板粘贴数据
     *
     * @param headerId 当前单耗ID
     * @param copiedLinesId 要粘贴的单耗明细ID
     * @param materialId 材料ID
     * @param uomId 单位ID
     * @param specification 规格
     * @param orderNo 要粘贴的单耗明细行号
     * @param createdBy 作成者
     * @param updatedBy 更新者
     * @return 影响行数
     */
    Integer insertFromClipboard(Long headerId, String copiedLinesId, Long materialId,
            Long uomId, String specification, Integer orderNo, Long createdBy, Long updatedBy);

    /**
     * 将引入的单耗明细ID字段清空
     *
     * @param headerId 单耗ID
     * @return 影响的行数
     */
    Integer clearImportedBomLinesId(Long headerId);

    /**
     * 重新设置单耗表标识明细的顺序号
     *
     * @param headerId 单耗表标识
     * @return
     */
    Integer resetLinesOrder(Long headerId);

    /**
     * 更新单耗明细排列顺序。
     *
     * @param itemsList 所选单耗
     * @return 影响行数
     */
    Integer updateLinesOrder(List<PieceYardageLinesEntity> itemsList);
}
